package com.ks.user.service;

import com.ks.core.base.OperationContext;
import com.ks.core.dto.SearchCriteriaBase;
import com.ks.user.entity.OrgEmployee;
import com.ks.user.entity.OrgTenant;
import com.ks.user.entity.UserBase;
import com.baomidou.mybatisplus.service.IService;
import org.apache.catalina.User;

import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author kingdee123
 * @since 2020-11-18
 */
public interface IUserBaseService extends IService<UserBase> {

    /**
     * 通过userId获取token
     *
     * @param userId
     * @return
     */
    String TokenStorage(String userId);


    /**
     * 使用手机号和密码登录
     *
     * @param mobile
     * @param password
     * @return
     */
    Map<String, Object> login(String mobile, String password, String code, String username,Integer tenantId);


    /**
     * 设置租户管理员
     *
     * @param operationContext
     * @param tenantId
     * @param orgId
     * @return
     */
    int setTenantAdmin(OperationContext operationContext, String mobile, String name, int tenantId, int orgId);


    /**
     * 根据用Id查询用户信息
     *
     * @param userId
     * @return
     */
    Map<String, Object> getUserInfo(int userId);


    /**
     * 重置租户用户的密码
     *
     * @param userId
     * @return
     */
    int ResetPassword(int userId, String mobile, String code);

    /**
     * 用户退出功能
     *
     * @param
     * @return
     */
    int SignOut(OperationContext operationContext);

    /**
     * 生成authToken
     *
     * @param userBase
     * @return
     */
    String getAuthToken(UserBase userBase);

   /* Map<String, Object> log(String mobile, String password);*/

    /**
     * 校验验证码
     *
     * @param mobile
     * @param type
     * @param code
     */
    void checkCode(String mobile, String type, String code);

    /**
     * 使用手机号查询用户信息
     *
     * @param mobile
     * @return
     */
    UserBase selectMobile(String mobile,int tenantId);

    /**
     * 根据用户名
     *
     * @param username
     * @return
     */
    UserBase selectUserName(String username);


    /**
     * 查询租户详情
     *
     * @param userId
     * @return
     */
    UserBase getQueryTenant(OperationContext operationContext, int userId);

    /**
     * 修改租户用户信息
     *
     * @param
     * @param userBase
     * @return
     */
    int updateTenantUser(OperationContext operationContext, UserBase userBase);

    /**
     * 租户用户修改密码
     *
     * @param
     * @param mobile
     * @param code
     * @param password
     * @param newPassword
     * @return
     */
    int changeTenantPassword(OperationContext operationContext, String mobile, String code, String password, String newPassword);


    /**
     * 组织内员工清单用户获取接口
     *
     * @param
     * @return
     */
    Map<String, Object> getUserList(OperationContext operationContext, SearchCriteriaBase searchCriteriaBase);


    /**
     * 租户重置员工密码接口
     *
     * @param
     * @param employeeId
     * @return
     */
    int ResetEmployeeUserPwd(OperationContext operationContext, String type, int employeeId);


    /**
     * 租户设置员工用户开启关闭接口
     *
     * @param userId
     * @param lock
     * @return
     */
    int setUserLock(int userId, int lock);


    /**
     * 员工用户获取个人信息接口
     *
     * @param operationContext
     * @return
     */
    UserBase getUserBaseInfo(OperationContext operationContext);


    /**
     * 租户修改手机号
     * @param operationContext
     * @param mobile
     * @param code
     * @param password
     * @return
     */
    int updateMobile(OperationContext operationContext, String mobile, String code, String password);

}
